import axios from 'axios';

export function http(config) {
    const instance = axios.create({
        baseURL: 'https://www.fastmock.site/mock/ae8e9031947a302fed5f92425995aa19/jd',
        timeout:6000
    })
    // 请求拦截
    instance.interceptors.request.use(config=>{
        //如果是一个按口需要认证才可以访问，就在这统一设置
        config.headers = {
            /**
             * application/json 提交json数据
             * application/x-www-form-urlencoded 表单序列化提交需要配合qs.stringify(data)
             */
            //  'Authorization': window.sessionStorage.getItem('token')
            'Content-Type':'application/json',  
        }

        //直接放行
        return config;
    }, error =>{
        return Promise.reject(error)
    })

    // 响应拦截
    instance.interceptors.response.use(res=>{
          if(res.data.errno === 0) {
             return res.data ? res.data : res;
          }else{
             return Promise.reject(res.data)
          }
         
    }, error=>{
     
         //如果有需要授权才可以访问的按口，统一去login授权
         //如荣有错误，这里面会去处理，显示错误信息
         return Promise.reject(error)
    })

    return instance(config);
}

/**
 * @param {string} url
 * @param {object} data
 * @param {object} params
 */
export function post(url, data = {}, params = {}) {
  return http({
    method: 'post',
    url,
    data,
    params,
  })
}

/**
 * @param {string} url
 * @param {object} params
 */
export function get(url, params = {}) {
  return http({
    method: 'get',
    url,
    params,
  })
}

/**
 * @param {string} url
 * @param {object} data
 * @param {object} params
 */
export function put(url, data = {}, params = {}) {
  return http({
    method: 'put',
    url,
    params,
    data,
  })
}

/**
 * @param {string} url
 * @param {object} params
 */
export function _delete(url, params = {}) {
  return http({
    method: 'delete',
    url,
    params,
  })
}